热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

确定性|笔者_轻松入门强化学习的一本新书《EasyRL强化学习教程》

篇首语:本文由编程笔记#小编为大家整理,主要介绍了轻松入门强化学习的一本新书《EasyRL强化学习教程》相关的知识,希望对你有一定的参考价值。强化学习(

篇首语:本文由编程笔记#小编为大家整理,主要介绍了轻松入门强化学习的一本新书《Easy RL 强化学习教程》相关的知识,希望对你有一定的参考价值。


强化学习(reinforcement learning,RL)讨论的问题是智能体(agent)怎么在复杂、不确定的环境(environment)里面去最大化它能获得的奖励。如图 1.1所示,强化学习由两部分组成:智能体和环境。在强化学习过程中,智能体与环境一直在交互。智能体在环境里面获取某个状态后,它会利用该状态输出一个动作(action),这个动作也称为决策(decision)。然后这个动作会在环境之中被执行,环境会根据智能体采取的动作,输出下一个状态以及当前这个动作带来的奖励。智能体的目的就是尽可能多地从环境中获取奖励。

强化学习的国内相关资料相对较少, 入门较为困难。因此,笔者尝试在网上寻找公开课进行学习,在精心 挑选后,使用李宏毅老师的“深度强化学习”、周博磊老师的“强化学习纲要”以 及李科浇老师的“百度强化学习”公开课(以下简称 “3 门公开课”) 作为学习课 程, 获益匪浅, 于是将所学内容结合笔者个人的理解和体会初步整理成笔记。之 后, 在众多优秀开源教程的启发下, 笔者决定将该笔记制作成教程来让更多的强化学习初学者受益。这本教程就是刚刚上架的“蘑菇书”《Easy RL 强化学习教程》。


Easy RL 强化学习教程


萃取3门强化学习经典公开课精华

李宏毅“深度强化学习”+周博磊“强化学习纲要”+李科浇“世界冠军带你从零实践强化学习”

Datawhale的开源“蘑菇书”——Easy-RL

来自中科院、清华、北大的Datawhale成员自学笔记,GitHub发布9个月下载过万。

小白轻松入门的指南,大厂强化学习面试敲门砖

简单生动的例子+重难点公式详细推导+关键词、习题和面试题+Python实现代码

4项配套资源,满满意外收获!

◆ 可下载Python实现代码 ◆ 可下载习题答案

◆ 可下载面试答案 ◆ 学习交流服务

全书主要内容源于 3 门公开课, 并在其基础上进行了一定的原创。比如, 为了尽可能地降低阅读门槛, 笔者对 3 门公开课的精华内容进行选取并优化, 所涉及的公式都有详细的推导过程, 对较难理解的知识点进行了重点讲解和强化, 方 便读者较为轻松地入门。此外, 为了书籍的丰富性, 笔者还补充了不少 3 门公开 课之外的强化学习相关知识。全书共 13 章, 大体上可分为 2 个部分: 第 1 部分 包括第 1 ∼ 3 章,介绍强化学习基础知识以及传统强化学习算法;第 2 部分包括

第 4 ∼ 13 章, 介绍深度强化学习算法以及常见问题的解决方法。第 2 部分各章 相对独立,读者可根据自己的兴趣和时间情况选择阅读。

李宏毅老师是台湾大学副教授,其研究方向为机器学习、深度学习及语音识别 与理解。李宏毅老师的课程在国内很受欢迎, 很多人选择的机器学习入门学习材料都是李宏毅老师的公开课视频。李宏毅老师的“深度强化学习”课程幽默风趣, 他会通过很多有趣的例子来讲解强化学习理论。比如李老师经常会用玩雅达利游 戏的例子来讲解强化学习算法。周博磊老师是 UCLA(University of California, Los Angeles,加利福尼亚大学洛杉矶分校)助理教授(原香港中文大学助理教授), 其研究方向为机器感知和智能决策, 在人工智能顶级会议和期刊发表了 50 余篇 学术论文, 论文总引用数超过 1 万次。周博磊老师的“强化学习纲要”课程理论 严谨、内容丰富, 全面地介绍了强化学习领域, 并且有相关的代码实践。李科浇 老师是飞桨强化学习 PARL 团队核心成员,百度高级研发工程师,其所在团队曾 两度夺得 NeurIPS 强化学习赛事冠军。李科浇老师的“百度强化学习”实战性强, 通过大量的代码来讲解强化学习。经过笔者不完全统计, 本书所依托的 3 门公开 课的总播放量为 80 多万,深受广大初学者欢迎,3 位老师的课程均可在哔哩哔哩 (B 站)上进行观看。读者在观看相关公开课的同时,可以使用本书作为教辅,进 一步深入理解公开课的内容。

本书在大部分章节的最后设置了原创的关键词、习题和面试题来提高和巩固 读者对知识的清晰度和掌握程度。其中,关键词部分总结了对应章节的重点概念, 方便读者高效地回忆并掌握核心内容; 习题部分以问答的形式阐述了本章节中出 现的知识点,帮助读者理清知识脉络;面试题部分来源于大厂的算法岗面试真题, 通过还原最真实的面试场景和面试的问题, 帮助读者开阔思路, 为读者面试理想 的岗位助力。此外, 笔者以为, 强化学习是一个理论与实践相结合的学科, 读者 不仅要理解其算法背后的一些数学原理, 还要通过上机实践来实现算法。本书配 有对应的 Python 代码实现, 可以让读者通过动手实现各种经典的强化学习算法, 充分掌握强化学习算法的原理。本书经过近 1 年的更新迭代以及读者对于我们开源版教程的上百次的反馈和交流,对您的学习和工作一定会是一个有利的加持。


本书包含什么内容?

全书共13章,大体上可分为两个部分:第一部分包括第1~3章,介绍强化学习基础知识以及传统强化学习算法;第二部分包括第4~13章,介绍深度强化学习算法及其常见问题的解决方法。第二部分各章相对独立,读者可根据自己的兴趣和时间选择性阅读。


我是刚刚毕业的学生,想去“大厂”工作,本书是否有帮助?

本书习题部分以问答的形式阐述了相应章中出现的知识点,以帮助读者理清知识脉络;面试题部分的内容源于“大厂”的算法岗面试真题,通过还原真实的面试场景和面试问题,为读者面试理想的岗位助力。


目录

第 1 章绪论 1

1.1 强化学习概述 1

1.1.1 强化学习与监督学习 1

1.1.2 强化学习的例子 5

1.1.3 强化学习的历史 7

1.1.4 强化学习的应用 8

1.2 序列决策概述 10

1.2.1 智能体和环境 10

1.2.2 奖励 10

1.2.3 序列决策 10

1.3 动作空间 12

1.4 强化学习智能体的组成部分和类型 12

1.4.1 策略 13

1.4.2 价值函数 13

1.4.3 模型 14

1.4.4 强化学习智能体的类型 16

1.5 学习与规划 19

1.6 探索和利用 20

1.7 强化学习实验 22

1.7.1 Gym 23

1.7.2 MountainCar-v0 例子27

1.8 关键词 30

1.9 习题 31

1.10 面试题 32

参考文献 32

第 2 章马尔可夫决策过程 33

2.1 马尔可夫过程 34

2 | Easy RL:强化学习教程

2.1.1 马尔可夫性质 34

2.1.2 马尔可夫过程/马尔可夫链 34

2.1.3 马尔可夫过程的例子 35

2.2 马尔可夫奖励过程 36

2.2.1 回报与价值函数 36

2.2.2 贝尔曼方程 38

2.2.3 计算马尔可夫奖励过程价值的迭代算法 42

2.2.4 马尔可夫奖励过程的例子 43

2.3 马尔可夫决策过程 44

2.3.1 马尔可夫决策过程中的策略 44

2.3.2 马尔可夫决策过程和马尔可夫过程/马尔可夫奖励过程的区别 45

2.3.3 马尔可夫决策过程中的价值函数 45

2.3.4 贝尔曼期望方程 46

2.3.5 备份图47

2.3.6 策略评估 49

2.3.7 预测与控制 51

2.3.8 动态规划 53

2.3.9 使用动态规划进行策略评估 53

2.3.10 马尔可夫决策过程控制 56

2.3.11 策略迭代 58

2.3.12 价值迭代 61

2.3.13 策略迭代与价值迭代的区别 63

2.3.14 马尔可夫决策过程中的预测和控制总结 66

2.4 关键词 67

2.5 习题 68

2.6 面试题 69

参考文献 69

第3 章表格型方法 70

3.1 马尔可夫决策过程 70

3.1.1 有模型71

3.1.2 免模型72

3.1.3 有模型与免模型的区别 73

3.2 Q 表格 73

3.3 免模型预测 77

3.3.1 蒙特卡洛方法 77

3.3.2 时序差分方法 80

3.3.3 动态规划方法、蒙特卡洛方法以及时序差分方法的自举和采样 86

3.4 免模型控制 88

3.4.1 Sarsa:同策略时序差分控制 91

3.4.2 Q 学习:异策略时序差分控制 94

3.4.3 同策略与异策略的区别 97

3.5 使用Q 学习解决悬崖寻路问题 98

3.5.1 CliffWalking-v0 环境简介 98

3.5.2 强化学习基本接口 100

3.5.3 Q 学习算法 102

3.5.4 结果分析 103

3.6 关键词 104

3.7 习题105

3.8 面试题 105

参考文献 105

第4 章策略梯度 106

4.1 策略梯度算法 106

4.2 策略梯度实现技巧 115

4.2.1 技巧1:添加基线 115

4.2.2 技巧2:分配合适的分数 117

4.3 REINFORCE:蒙特卡洛策略梯度 119

4.4 关键词 125

4.5 习题125

4.6 面试题 125

参考文献 126

第5 章近端策略优化 127

5.1 从同策略到异策略 127

5.2 近端策略优化 133

5.2.1 近端策略优化惩罚 134

4 | Easy RL:强化学习教程

5.2.2 近端策略优化裁剪 135

5.3 关键词 138

5.4 习题139

5.5 面试题 139

参考文献 139

第6 章深度Q 网络 140

6.1 状态价值函数 140

6.2 动作价值函数 145

6.3 目标网络 150

6.4 探索152

6.5 经验回放 154

6.6 深度Q 网络算法总结156

6.7 关键词 157

6.8 习题158

6.9 面试题 159

参考文献 159

第7 章深度Q 网络进阶技巧 160

7.1 双深度Q 网络 160

7.2 竞争深度Q 网络 162

7.3 优先级经验回放 165

7.4 在蒙特卡洛方法和时序差分方法中取得平衡 166

7.5 噪声网络 167

7.6 分布式Q 函数 168

7.7 彩虹170

7.8 使用深度Q 网络解决推车杆问题 172

7.8.1 CartPole-v0 简介 172

7.8.2 深度Q 网络基本接口 173

7.8.3 回放缓冲区175

7.8.4 Q 网络 175

7.8.5 深度Q 网络算法 176

7.8.6 结果分析 178

7.9 关键词 179

7.10 习题 180

7.11 面试题 180

参考文献 180

第8 章针对连续动作的深度Q 网络 181

8.1 方案1:对动作进行采样182

8.2 方案2:梯度上升 182

8.3 方案3:设计网络架构 182

8.4 方案4:不使用深度Q 网络 183

8.5 习题184

第9 章演员-评论员算法 185

9.1 策略梯度回顾 185

9.2 深度Q 网络回顾 186

9.3 演员-评论员算法 187

9.4 优势演员-评论员算法 188

9.5 异步优势演员-评论员算法 190

9.6 路径衍生策略梯度 191

9.7 与生成对抗网络的联系 195

9.8 关键词 196

9.9 习题196

9.10 面试题 196

第 10 章深度确定性策略梯度 197

10.1 离散动作与连续动作的区别 197

10.2 深度确定性策略梯度199

10.3 双延迟深度确定性策略梯度 203

10.4 使用深度确定性策略梯度解决倒立摆问题 205

10.4.1 Pendulum-v1 简介 205

10.4.2 深度确定性策略梯度基本接口 206

10.4.3 Ornstein-Uhlenbeck 噪声 207

10.4.4 深度确定性策略梯度算法 208

10.4.5 结果分析209

10.5 关键词 211

10.6 习题 211

10.7 面试题 211

参考文献 211

第 11 章稀疏奖励212

11.1 设计奖励 212

11.2 好奇心 214

11.3 课程学习 216

11.4 分层强化学习 219

11.5 关键词 221

11.6 习题 222

参考文献 222

第 12 章模仿学习223

12.1 行为克隆 223

12.2 逆强化学习 226

12.3 第三人称视角模仿学习 231

12.4 序列生成和聊天机器人 232

12.5 关键词 233

12.6 习题 233

参考文献 234

第 13 章AlphaStar 论文解读 235

13.1 AlphaStar 以及背景简介 235

13.2 AlphaStar 的模型输入和输出是什么呢?——环境设计 235

13.2.1 状态(网络的输入) 236

13.2.2 动作(网络的输出) 236

13.3 AlphaStar 的计算模型是什么呢?——网络结构 237

13.3.1 输入部分237

13.3.2 中间过程239

13.3.3 输出部分239

13.4 庞大的AlphaStar 如何训练呢?——学习算法 240

13.4.1 监督学习240

13.4.2 强化学习241

13.4.3 模仿学习242

13.4.4 多智能体学习/自学习 243

13.5 AlphaStar 实验结果如何呢?——实验结果 243

13.5.1 宏观结果243

13.5.2 其他实验(消融实验) 244

13.6 关于AlphaStar 的总结 245

参考文献 245



推荐阅读
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • Python开源库和第三方包的常用框架及库
    本文介绍了Python开源库和第三方包中常用的框架和库,包括Django、CubicWeb等。同时还整理了GitHub中最受欢迎的15个Python开源框架,涵盖了事件I/O、OLAP、Web开发、高性能网络通信、测试和爬虫等领域。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
author-avatar
U友39373533
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有